﻿using System.Collections.Generic;

namespace com.binance.client.model.enums
{
	public sealed class MBPLevelEnums
	{


	  public static readonly MBPLevelEnums LEVEL5 = new MBPLevelEnums("LEVEL5", InnerEnum.LEVEL5, 5);
	  public static readonly MBPLevelEnums LEVEL10 = new MBPLevelEnums("LEVEL10", InnerEnum.LEVEL10, 10);
	  public static readonly MBPLevelEnums LEVEL20 = new MBPLevelEnums("LEVEL20", InnerEnum.LEVEL20, 20);
	  public static readonly MBPLevelEnums LEVEL150 = new MBPLevelEnums("LEVEL150", InnerEnum.LEVEL150, 150);

	  private static readonly IList<MBPLevelEnums> valueList = new List<MBPLevelEnums>();

	  static MBPLevelEnums()
	  {
		  valueList.Add(LEVEL5);
		  valueList.Add(LEVEL10);
		  valueList.Add(LEVEL20);
		  valueList.Add(LEVEL150);
	  }

	  public enum InnerEnum
	  {
		  LEVEL5,
		  LEVEL10,
		  LEVEL20,
		  LEVEL150
	  }

	  public readonly InnerEnum innerEnumValue;
	  private readonly string nameValue;
	  private readonly int ordinalValue;
	  private static int nextOrdinal = 0;

	  private readonly int levels;

	  internal MBPLevelEnums(string name, InnerEnum innerEnum, int levels)
	  {
		this.levels = levels;

		  nameValue = name;
		  ordinalValue = nextOrdinal++;
		  innerEnumValue = innerEnum;
	  }

	  public int Levels
	  {
		  get
		  {
			return levels;
		  }
	  }

		public static IList<MBPLevelEnums> values()
		{
			return valueList;
		}

		public int ordinal()
		{
			return ordinalValue;
		}

		public override string ToString()
		{
			return nameValue;
		}

		public static MBPLevelEnums valueOf(string name)
		{
			foreach (MBPLevelEnums enumInstance in MBPLevelEnums.valueList)
			{
				if (enumInstance.nameValue == name)
				{
					return enumInstance;
				}
			}
			throw new System.ArgumentException(name);
		}
	}

}